Scroll to navigation

PAPI_attach(3) PAPI PAPI_attach(3)

NAME

PAPI_attach  - attach PAPI event set to the specified thread id
PAPI_detach  - detach PAPI event set from previously specified thread id and restore to executing thread

SYNOPSIS

C Interface

#include <papi.h>
int PAPI_attach(int EventSet, unsigned long tid);
int PAPI_detach(int EventSet);

Fortran Interface

<none>

DESCRIPTION

PAPI_attach() and PAPI_detach() are wrapper functions that access PAPI_set_opt() (3) to allow PAPI to monitor performance counts on a thread other than the one currently executing. This is sometimes referred to as third party monitoring. PAPI_attach() connects the specified EventSet to the specifed thread; PAPI_detach() breaks that connection and restores the EventSet to the original executing thread.

ARGUMENTS

EventSet -- an integer handle for a PAPI Event Set as created by PAPI_create_eventset(3)

tid -- a thread id as obtained from, for example, PAPI_list_threads(3) or PAPI_thread_id(3).

RETURN VALUES

On success, these functions return PAPI_OK. On error, a negative error code is returned.

ERRORS

This feature is unsupported on this substrate.
One or more of the arguments is invalid.
The event set specified does not exist.
The event set is currently counting events.

EXAMPLES

int EventSet = PAPI_NULL;
unsigned long pid;
pid = fork();
if (pid <= 0)

exit(1); if (PAPI_create_eventset(&EventSet) != PAPI_OK)
exit(1); /* Add Total Instructions Executed to our EventSet */ if (PAPI_add_event(EventSet, PAPI_TOT_INS) != PAPI_OK)
exit(1); /* Attach this EventSet to the forked process */ if (PAPI_attach(EventSet, pid) != PAPI_OK)
exit(1);

BUGS

There are no known bugs in these functions.

SEE ALSO

PAPI_list_threads(3), PAPI_thread_id(3), PAPI_thread_init(3), PAPI_set_opt(3)

October, 2006 PAPI Programmer's Reference